package com.deyuanyun.pic.app.mapper;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;








import com.deyuanyun.pic.pig.domain.PigResults;
import com.deyuanyun.pic.pig.domain.PigTaskPoint;
import com.github.pagehelper.Page;

public interface PigMapper {
	/**
	 * 登陆接口mapper
	 * 
	 */
	List<HashMap<String,Object>> login(@Param("Account") String Account);
	
	//外部人员借用
	//HashMap<String,Object> logins(@Param("Account") String Account);
	
	/**
	 * 写登录日志接口
	 */
	int insertLog(@Param("Id") String Id,@Param("userId") String userId,@Param("state") Integer state,
			@Param("accessType") Integer accessType);
	/**
	 * 判断用户是否是有效用户
	 * @param UserID
	 * @return
	 */
	HashMap<String,Object> findUserId(@Param("UserID") String UserID);
	/**
	 * 选择任务接口
	 * @return
	 */
    Page<HashMap<String, Object>>  findTask();
    
    /**
     * 获取任务信息 
     * @param taskId
     * @return
     */
    HashMap<String, Object> getTaskInfo(@Param("taskId") String taskId);
    
    /**
     * 搜索任务接口
     * @param pipeName
     * @return
     */
    Page<HashMap<String, Object>>  findTaskByName(@Param("pipeName") String pipeName);
    /**
     * 选择跟踪点接口(发球点)
     * @param taskId
     * @return
     */
    HashMap<String, Object> findSend(@Param("taskId") String taskId);
    /**
     * 选择跟踪点接口(收球点)
     * @param taskId
     * @return
     */
    HashMap<String, Object> findBack(@Param("taskId") String taskId);
	/**
	 * 选择跟踪点接口(跟踪点)
	 * @return
	 */
    List<HashMap<String, Object>> findMark(@Param("taskId") String taskId,@Param("type") Integer type);
  /**
   * 选择清管类型接口
   * @return
   */
  List<HashMap<String, Object>> getTaskTypes(@Param("type") String type);
  
  /**
   * 获得检测器接口
   * @return
   */
  List<HashMap<String, Object>> getdetector();
  /**
    * 根据taskId查询相应的管道ID和检测管段ID
    * @param taskId
    * @return
    */
   HashMap<String, Object> selectId(@Param("taskId") String taskId);
   
   /**
    * 查询pic-pig-result是否有结果
    * @param result
    * @return
    */
   int selectCount(PigResults result);
   
   /**
    * 提交发球点信息更新清管类型
    */
  int updateCleanType(PigResults result);
  
  /**
   * 提交发球点信息
   */
  int insertSendInfo(PigResults result);
  
  /**
   * 提交发球点信息
   */
 int updateSendInfo(PigResults result);

/**
 * 提交收球点信息
 */
  
  int updateBackInfo(PigResults result);
  
  
  
  
  /**
   *  发球、收球、通过(发球) 
   */
  int updateSend(@Param("taskId") String taskId,@Param("passTime") Date passTime);
  /**
   *  发球、收球、通过(收球) 
   */
  int updateBack(@Param("taskId") String taskId,@Param("passTime") Date passTime);
  

  /**
   * 提交标记点信息
   */
  
  int updateMarker(PigTaskPoint point);
  
  /**
   * 人到达跟踪点
   * 
   */
  int arriveMark(PigTaskPoint point);
  
  /**
   * 查询发球点图片ID
   */
  List<HashMap<String, Object>> selectSpicture(@Param("taskId") String taskId);
  
  /**
   * 查询收球点图片ID
   */
  List<HashMap<String, Object>> selectBpicture(@Param("taskId") String taskId);
  
  /**
   * 查询标记点图片ID
   */
  List<HashMap<String, Object>> selectMpicture(@Param("markId") String markId);
  
  /**
   * 更改状态
   * @param Staus
   * @param taskId
   * @return
   */
  int updateStaus(@Param("staus") BigDecimal staus,@Param("time") Date time,@Param("taskId") String taskId);
  
  /**
   * 算出上个mark点的最大时间和距离
   * @param id
   * @param taskId
   * @return
   */
 HashMap<String,Object> selectSpeed(@Param("taskId") String taskId);
 
 /**
  * 判断是否是第一个跟踪点（如果不为NULL，则不是，反之）
  * @return
  */
 HashMap<String,Object> MaxSpeed(@Param("taskId") String taskId);
 
 /**
  * 查询GIS地图相关数据
  * @return
  */
 HashMap<String,Object> selectGis();
 
 /**
  * 查询上一次已完成任务的计划清管时间
  * @return
  */
 HashMap<String,Object> selectTime();
 
 /**
  * 查询此收发球筒是否逆流
  * @param taskId
  * @return
  */
 HashMap<String,Object> selectOrderBytaskId(String taskId);
 
 /**
 * 查询正常情况下跳过了那些跟球点
 * @author Jerry
 * @date 2016年4月14日 下午8:34:43
  */
 List<HashMap<String, Object>> selectOtherMarkByMile(@Param("taskId")String taskId,@Param("mile") BigDecimal mile);
 
 /**
 * 查询扭转情况下跳过了那些跟球点
 * @author Jerry
 * @date 2016年4月14日 下午8:33:35
 */
 List<HashMap<String, Object>> selectNiOtherMarkByMile(@Param("taskId")String taskId,@Param("mile") BigDecimal mile);
 
 /**
  * 查询当前跟踪点平均速度是否为空
 * 
 * @author Jerry
 * @date 2016年4月18日 下午1:38:56
  */
  HashMap<String,Object> selectAvgSpeed(String id);
}
